#ifndef TEST_RAND
#define TEST_RAND

#include <random>

using namespace std;

struct IntRandom {
  std::random_device rd;
  std::mt19937 gen;
  std::uniform_int_distribution<> dist;
  std::default_random_engine dgen;

  /**
   * @brief 左闭右闭
   *
   * @param begin
   * @param end
   */
  IntRandom(int begin, int end) : rd{}, gen(rd()), dist(begin, end), dgen{} {}

  int operator()() { return dist(gen); }
  /**
   * @brief 每次程序运行产生的数据相同
   *
   * @param a 可以是任意整数
   * @return int
   */
  int operator()(int a) { return dist(dgen); }
};

#endif